import axios,{AxiosInstance,AxiosRequestConfig} from "axios"
import { HYRequestConfig } from "./type";

class HYRequest{
    instance:AxiosInstance //数据类型

    //创建实例
    constructor(config:AxiosRequestConfig){
      this.instance=axios.create(config)

      //请求拦截器
      this.instance.interceptors.request.use(config=>{
     console.log("请求成功拦截");

        return config
      },err=>{
        console.log("全局请求失败的拦截");
        return err

      })
      //响应拦截
      this.instance.interceptors.response.use(res=>{
        console.log("全局响应成功的拦截");
        return res

      },err=>{
        console.log("全局响应失败的拦截");
        return err

      })
    }

    request(config:AxiosRequestConfig){
      return this.instance.request(config)
    }

    get<T=any>(config:HYRequestConfig<T>){
      return this.request({...config,method:"GET"})
    }
    post<T=any>(config:HYRequestConfig<T>){
      return this.request({...config,method:"POST"})
    }
    delete<T=any>(config:HYRequestConfig<T>){
      return this.request({...config,method:"DELETE"})
    }
    patch<T=any>(config:HYRequestConfig<T>){
      return this.request({...config,method:"PATCH"})
    }

}
export default HYRequest
